// 引入API
const {getCategories,getGoodsPage} = require('../../api/goods');

Page({
  data: {
    // 轮播图数据
    banners: [],
    
    // 分类数据
    categories: [],
    activeCategory: 0,
    
    // 商品列表数据
    goodsList: [],
    current: 1,
    pageSize: 10,
    hasMore: true,
    total: 0,
    
    // 搜索关键词
    keyword: '',
    
    // 加载状态
    initialLoading: true,
    loading: false,
    
    // 底部导航栏当前选中项
    activeTab: 0,
    
    // 控制banner显示/隐藏
    showBanner: true,
    
    // 滚动位置记录
    scrollTop: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.initData();
  },

  /**
   * 初始化数据
   */
  initData: function () {
    this.setData({
      initialLoading: true
    });
    
    // 初始化数据
    this.setMockBanners(); // 暂时保留模拟轮播图
    this.fetchCategories(); // 获取真实分类数据
    
    this.setData({
      initialLoading: false
    });
  },

  /**
   * 设置假的轮播图数据
   */
  setMockBanners: function () {
    const banners = [
      {
        activityId: 1,
        imageUrl: '/images/banner1.png',
        linkUrl: '/pages/activity/activityA/index'
      },
      {
        activityId: 2,
        imageUrl: '/images/banner2.png',
        linkUrl: '/pages/activity/activityB/index'
      },
      {
        activityId: 3,
        imageUrl: '/images/banner3.png',
        linkUrl: '/pages/activity/activityC/index'
      }
    ];
    
    this.setData({
      banners
    });
  },

  /**
   * 获取分类数据
   */
  fetchCategories: function () {
    getCategories().then(res => {
      console.log('分类数据:', res);
      if (res.code === 20000) {
        console.log("hello")
        this.setData({
          categories: res.data || [],
          activeCategory: 0
        }, () => {
          // 获取分类后，加载第一个分类的商品
          if (this.data.categories.length > 0) {
            this.fetchGoodsList(true);
          }
        });
      } else {
        wx.showToast({
          title: res.msg || '获取分类失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      console.error('获取商品分类失败:', err);
      wx.showToast({
        title: '获取商品分类失败',
        icon: 'none'
      });
    });
  },

  /**
   * 获取商品列表数据
   * @param {boolean} refresh - 是否刷新列表
   */
  fetchGoodsList: function (refresh = true) {
    if (this.data.loading) return;
    
    const { categories, activeCategory, current, pageSize, goodsList, keyword } = this.data;
    
    // 如果没有分类数据，则不设置商品列表
    if (categories.length === 0 || activeCategory < 0) {
      this.setData({
        goodsList: [],
        hasMore: false,
        loading: false
      });
      return;
    }
    
    this.setData({
      loading: true
    });
    
    // 获取当前选中的分类ID
    const categoryId = categories[activeCategory].id;
    console.log('当前分类id:', categoryId);
    // 调用API获取商品列表
    getGoodsPage({
      categoryId: categoryId,
      keyword: keyword || '',
      current: refresh ? 1 : current,
      pageSize: pageSize
    }).then(res => {
      console.log('商品列表数据:', res);
      if (res.code === 20000) {
        const newGoodsList = res.list || [];
        this.setData({
          goodsList: refresh ? newGoodsList : [...goodsList, ...newGoodsList],
          current: refresh ? 2 : current + 1,
          total: res.total || 0,
          hasMore: (refresh ? newGoodsList.length : goodsList.length + newGoodsList.length) < (res.total || 0),
          loading: false
        });
      } else {
        wx.showToast({
          title: res.msg || '获取商品列表失败',
          icon: 'none'
        });
        this.setData({
          loading: false
        });
      }
    }).catch(err => {
      console.error('获取商品列表失败:', err);
      wx.showToast({
        title: '获取商品列表失败',
        icon: 'none'
      });
      this.setData({
        loading: false
      });
    });
  },

  /**
   * 获取商品列表（兼容API调用方式）
   * @param {boolean} refresh - 是否刷新列表
   */
  fetchProducts: function (refresh = false) {
    this.setMockProducts(refresh);
  },

  /**
   * 分类切换事件
   */
  onCategoryChange: function (event) {
    const activeCategory = event.detail;
    
    this.setData({
      activeCategory,
      goodsList: [],
      current: 1,
      hasMore: true
    }, () => {
      this.fetchGoodsList(true);
    });
  },

  /**
   * 搜索框输入事件
   */
  onSearchChange: function (event) {
    this.setData({
      keyword: event.detail
    });
  },

  /**
   * 搜索事件
   */
  onSearch: function () {
    this.setData({
      goodsList: [],
      current: 1,
      hasMore: true
    }, () => {
      this.fetchGoodsList(true);
    });
  },

  /**
   * 商品点击事件
   */
  onProductTap: function (event) {
    const productId = event.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/goods/detail/index?id=${productId}`
    });
  },

  /**
   * 轮播图点击事件
   */
  onBannerTap: function (event) {
    const banner = event.currentTarget.dataset.item;
    if (banner.linkUrl) {
      wx.navigateTo({
        url: banner.linkUrl
      });
    }
  },
/**
 * 处理自定义标签页切换事件
 */
onCustomTabChange: function(event) {
    const { index } = event.detail;
    // 只需更新当前选中的标签页
    this.setData({ activeTab: index });
    // 导航逻辑已经在组件中处理
},


  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      goodsList: [],
      current: 1,
      hasMore: true
    }, () => {
      this.fetchCategories();
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 监听商品列表的滚动事件
   */
  onProductScroll: function(e) {
    const scrollTop = e.detail.scrollTop;
    const lastScrollTop = this.data.scrollTop;
    
    // 更新滚动位置
    this.setData({
      scrollTop: scrollTop
    });
    
    // 向下滚动且在顶部附近，显示banner
    if (scrollTop < 10 && scrollTop < lastScrollTop) {
      this.setData({
        showBanner: true
      });
    } 
    // 向上滚动，隐藏banner
    else if (scrollTop > lastScrollTop) {
      this.setData({
        showBanner: false
      });
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    // 只在首次进入页面时显示banner
    if (!this.hasShown) {
      this.setData({
        showBanner: true
      });
      this.hasShown = true;
    }
    // 否则保持当前banner状态不变
  },

  /**
   * scroll-view滚动到底部事件处理函数
   */
  onScrollToLower: function() {
    if (this.data.hasMore && !this.data.loading) {
      // 当前分类还有更多商品，加载更多
      this.fetchGoodsList(false);
    } else if (!this.data.hasMore && !this.data.loading) {
      // 当前分类没有更多商品，尝试切换到下一个分类
      const { activeCategory, categories } = this.data;
      if (activeCategory < categories.length - 1) {
        // 还有下一个分类，自动切换
        this.setData({
          activeCategory: activeCategory + 1,
          goodsList: [],
          current: 1,
          hasMore: true
        }, () => {
          this.fetchGoodsList(true);
        });
      }
    }
  },
  
  /**
   * 页面上拉触底事件的处理函数
   * 注意：使用scroll-view后，此函数可能不会触发
   */
  onReachBottom: function () {
    // 保留此函数以防在某些情况下仍然需要
    console.log('页面触底');
  }
});